#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
欧意（OKX）行情数据获取示例
"""

import asyncio
import json
from okx_market import OKXMarket

# 初始化OKXMarket类（使用代理）
okx = OKXMarket(use_proxy=True, proxy_url="http://localhost:10809")

def print_nice_json(data):
    """美化打印JSON数据"""
    print(json.dumps(data, indent=2, ensure_ascii=False))

def demo_rest_api():
    """演示REST API获取行情"""
    print("\n===== 获取BTC-USDT行情 =====")
    ticker = okx.get_ticker("BTC-USDT")
    print_nice_json(ticker)
    
    print("\n===== 获取ETH-USDT K线数据 =====")
    klines = okx.get_klines("ETH-USDT", bar="15m", limit=5)
    print_nice_json(klines)
    
    print("\n===== 获取BTC-USDT深度数据 =====")
    orderbook = okx.get_orderbook("BTC-USDT", depth=5)
    print_nice_json(orderbook)
    
    print("\n===== 获取BTC-USDT最近成交 =====")
    trades = okx.get_trades("BTC-USDT", limit=3)
    print_nice_json(trades)

async def ticker_callback(data):
    """行情数据回调函数"""
    print("\n收到行情数据:")
    print_nice_json(data)

async def demo_websocket():
    """演示WebSocket订阅行情"""
    print("\n===== 订阅BTC-USDT行情 =====")
    # 这将一直运行直到程序被终止
    await okx.subscribe_ticker(["BTC-USDT"], ticker_callback)

async def main():
    """主函数"""
    # 演示REST API
    demo_rest_api()
    
    # 演示WebSocket（取消注释以运行）
    # await demo_websocket()

if __name__ == "__main__":
    # 捕获异常，防止程序崩溃
    try:
        asyncio.run(main())
    except Exception as e:
        print(f"程序执行异常: {e}") 